Hey liebe Community,
leider hänge ich bei meinem Projekt, ein 2D Sidescroller mit Unity5,zu erstellen bei einem Problem.
Mein Charakter Controller hängt bei Play in der Luft und ist zuerst in einer Idle Animation, geht dann in eine Loop Jump Animation und sinkt nicht zu Grund trotz Rigidbody 2D.
Wenn ich den Animator beim Controller heraus nehme, sinkt dieser und ist steuerbar jedoch ohne Animationen was ja nicht der Sinn und Zweck sein soll.
Ohne Rigidbody 2D kommen folglich Script Probleme da ich diesen miteingebunden habe.
Bin noch grün hinter den Ohren was das Programmieren betrifft und habe keine großen Ambitionen.
Hoffe ihr könnt mir dennoch helfen.
Danke schonmal
Hier nun mein bisheriges Script:
|
C#-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
using UnityEngine;
using System.Collections;
public class PlayerController : MonoBehaviour {
public float maxSpeed = 4;
public float jumpForce = 550;
public Transform groundCheck;
public LayerMask whatIsGround;
[HideInInspector]
public bool lookingRight = true;
private Rigidbody2D rb2D;
private Animator anim;
private bool isGrounded = false;
private bool jump = false;
// Use this for initialization
void Start () {
rb2D = GetComponent<Rigidbody2D>();
anim = GetComponent<Animator>();
}
// Update is called once per frame
void Update () {
if (Input.GetButtonDown("Jump") && isGrounded)
jump = true;
}
void FixedUpdate()
{
float hor = Input.GetAxis("Horizontal");
anim.SetFloat("Speed",Mathf.Abs(hor));
rb2D.velocity = new Vector2(hor * maxSpeed, rb2D.velocity.y);
isGrounded = Physics2D.OverlapCircle (groundCheck.position, 0.15F, whatIsGround);
anim.SetBool("IsGrounded", isGrounded);
if ((hor > 0 && !lookingRight) ||(hor < 0 && lookingRight))
Flip ();
if(jump)
{
rb2D.AddForce(new Vector2(0,jumpForce));
jump = false;
}
}
public void Flip()
{
lookingRight = !lookingRight;
Vector3 myScale = transform.localScale;
myScale.x *= -1;
transform.localScale = myScale;
}
}
|