2
나는 단결의 초보자이며 2D 플랫폼 작성자를 스크립팅 할 때 YouTube 가이드를 따르고 있습니다. 이제 제가 돌아 가면 스프라이트에 플립을 추가하려고합니다. 반대 방향으로 갈 수 있습니다.Unity 2D의 스프라이트 플립 핑 문제
코드를 추가 했으므로 이제는 왼쪽에서 오른쪽으로 계속 튀어 나오고 있습니다. 만약 내가 지속적으로 실행> 0.1f 지속적으로 실행하는 기능의 결과로하지만 정직하게 나는 잃어버린 그래서 어떤 도움을 주시면 감사하겠습니다.
using UnityEngine;
using System.Collections;
[RequireComponent (typeof (Controller2D))]
public class Player : MonoBehaviour {
public float jumpHeight = 4;
public float timeToJumpApex = .4f;
float accelerationTimeAirbourne = .2f;
float acceleratinTimeGrounded =.1f;
public float moveSpeed = 6;
float jumpVelocity;
float gravity;
Vector3 velocity;
float velocityXSmoothing;
Controller2D controller;
void Start(){
controller = GetComponent<Controller2D>();
gravity = -(2 * jumpHeight)/Mathf.Pow (timeToJumpApex, 2);
jumpVelocity = Mathf.Abs(gravity) * timeToJumpApex;
print ("gravity: " + gravity + " Jump Velocity: " + jumpVelocity);
}
void Update(){
if (controller.collisions.above || controller.collisions.above) {
velocity.y = 0;
}
Vector2 input = new Vector2 (Input.GetAxisRaw ("Horizontal"),
Input.GetAxisRaw ("Vertical"));
if (Input.GetKeyDown (KeyCode.Space) && controller.collisions.below) {
velocity.y = jumpVelocity;
}
float targetVelocityX = input.x * moveSpeed;
velocity.x = Mathf.SmoothDamp(velocity.x, targetVelocityX, ref
velocityXSmoothing, (controller.collisions.below)?
acceleratinTimeGrounded:accelerationTimeAirbourne);
velocity.y += gravity * Time.deltaTime;
controller.Move(velocity * Time.deltaTime);
}
void FixedUpdate(){
if ((Input.GetAxis("Horizontal") > 0.1f && this.transform.localScale.x != 1)
|| (Input.GetAxis("Horizontal") < -0.1f && this.transform.localScale.x !=
-1))
{
flip();
}
}
void flip()
{
this.transform.localScale = new Vector3(this.transform.localScale.x *
-1,
this.transform.localScale.y, this.transform.localScale.z);
}
}
예제 스크립트를 제공해 주시겠습니까? 나는 당신이 적용하는 것이 어렵다는 것을 이해합니다 :) – James
대신'Input.GetKeyDown ("/ * the key * /")'를 사용하십시오 :) 당신은'FixedUpdate()'함수에서 그것을 호출 할 수 있습니다. 일단. 희망이 도움이! –